<?php
$areaCodeData = array(
  '1' => array(
        // US United States
        '1' => array(
        '(?:
            2(?:
              0[1-35-9]|
              1[02-9]|
              2[04589]|
              3[149]|
              4[08]|
              5[1-46]|
              6[0279]|
              7[026]|
              8[13]
            )|
            3(?:
              0[1-57-9]|
              1[02-9]|
              2[0135]|
              3[014679]|
              4[67]|
              5[12]|
              6[014]|
              8[056]
            )|
            4(?:
              0[124-9]|
              1[02-579]|
              2[3-5]|
              3[0245]|
              4[0235]|
              58|
              69|
              7[0589]|
              8[04]
            )|
            5(?:
              0[1-57-9]|
              1[0235-8]|
              20|
              3[0149]|
              4[01]|
              5[19]|
              6[1-37]|
              7[013-5]|
              8[056]
            )|
            6(?:
              0[1-35-9]|
              1[024-9]|
              2[03689]|
              3[016]|
              4[16]|
              5[017]|
              6[0-279]|
              78|
              8[12]
            )|
            7(?:
              0[1-46-8]|
              1[02-9]|
              2[0457]|
              3[1247]|
              4[037]|
              5[47]|
              6[02359]|
              7[02-59]|
              8[156]
            )|
            8(?:
              0[1-68]|
              1[02-8]|
              28|
              3[0-25]|
              4[3578]|
              5[046-9]|
              6[02-5]|
              7[028]
            )|
            9(?:
              0[1346-9]|
              1[02-9]|
              2[0589]|
              3[014678]|
              4[0179]|
              5[12469]|
              7[0-3589]|
              8[0459]
            )
          )[2-9]\\d{6}
        ', 
        // CA Canada
        '(?:
            2(?:
              04|
              [23]6|
              [48]9|
              50
            )|
            3(?:
              06|
              43|
              65
            )|
            4(?:
              03|
              1[68]|
              3[178]|
              50
            )|
            5(?:
              06|
              1[49]|
              48|
              79|
              8[17]
            )|
            6(?:
              0[04]|
              13|
              22|
              39|
              47
            )|
            7(?:
              0[59]|
              78|
              8[02]
            )|
            8(?:
              [06]7|
              19|
              25|
              73
            )|
            90[25]
          )[2-9]\\d{6}
        ',
      ),
    ),
    '2' => array(),
    '3' => array(
        // BG Bulgaria
        '359' => '
              (?:
                8[7-9]\\d|
                9(?:
                  8\\d|
                  99
                )
              )\\d{6}|
              4(?:
                3[0789]|
                8\\d
              )\\d{5}
            ',
        // FR France
        '33'  => '
          6\\d{8}|
          7(?:
            00\\d{6}|
            [3-9]\\d{7}
          )
            ',
        // GR Greece
        '30'  => '69\\d{8}',
        // HU  Hungary
        '36'  => '
              (?:
                [257]0|
                3[01]
              )\\d{7}
            ',
        // Italy IT
        '39'  => '
              3(?:
                [12457-9]\\d{8}|
                6\\d{7,8}|
                3\\d{7,9}
              )
            ',
        // NL  Netherlands
        '31'  => '6[1-58]\\d{7}',
        // Portugal PT
        '351' => '
              9(?:
                [1236]\\d{2}|
                480
              )\\d{5}
            ',
        // Spain ES
        '34'  => '
              (?:
                6\\d{6}|
                7[1-4]\\d{5}|
                9(?:
                  6906(?:
                    09|
                    10
                  )|
                  7390\\d{2}
                )
              )\\d{2}
            ',
    ),
    '4' => array(
        // Czech CZ
        '420' => '
              (?:
                60[1-8]|
                7(?:
                  0[2-5]|
                  [2379]\\d
                )
              )\\d{6}
            ',
        // Germany DE
        '49'  => '
          1(?:
            5[0-25-9]\\d{8}|
            6[023]\\d{7,8}|
            7(?:
              [0-57-9]\\d?|
              6\\d
            )\\d{7}
          )
            ',
        // Romania RO
        '40'  => '
              7(?:
                [0-8]\\d{2}|
                99\\d
              )\\d{5}
            ',
        // United Kingdom GB
        '44'  => '
              7(?:
                [1-4]\\d\\d|
                5(?:
                  0[0-8]|
                  [13-9]\\d|
                  2[0-35-9]
                )|
                7(?:
                  0[1-9]|
                  [1-7]\\d|
                  8[02-9]|
                  9[0-689]
                )|
                8(?:
                  [014-9]\\d|
                  [23][0-8]
                )|
                9(?:
                  [04-9]\\d|
                  1[02-9]|
                  2[0-35-9]|
                  3[0-689]
                )
              )\\d{6}
            ',
    ),
    '5' => array(
        // Brazil BR
        '55' => '
          1[1-9](?:
            7|
            9\\d
          )\\d{7}|
          (?:
            2[12478]|
            3[1-578]|
            [689][1-9]|
            7[13-579]
          )(?:
            [6-8]|
            9\\d?
          )\\d{7}|
          (?:
            4[1-9]|
            5[1-5]
          )[6-9]\\d{7}
            ',
        // Chile CL
        '56' => '9[4-9]\\d{7}',
        // Mexico MX
        '52' => '
              1(?:
                (?:
                  33|
                  55|
                  81
                )\\d{8}|
                (?:
                  2(?:
                    2[2-9]|
                    3[1-35-8]|
                    4[13-9]|
                    7[1-689]|
                    8[1-578]|
                    9[467]
                  )|
                  3(?:
                    1[1-79]|
                    [2458][1-9]|
                    7[1-8]|
                    9[1-5]
                  )|
                  4(?:
                    1[1-57-9]|
                    [24-6][1-9]|
                    [37][1-8]|
                    8[1-35-9]|
                    9[2-689]
                  )|
                  5(?:
                    88|
                    9[1-79]
                  )|
                  6(?:
                    1[2-68]|
                    [2-4][1-9]|
                    5[1-3689]|
                    6[12457-9]|
                    7[1-7]|
                    8[67]|
                    9[4-8]
                  )|
                  7(?:
                    [13467][1-9]|
                    2[1-8]|
                    5[13-9]|
                    8[1-69]|
                    9[17]
                  )|
                  8(?:
                    2[13-689]|
                    3[1-6]|
                    4[124-6]|
                    6[1246-9]|
                    7[1-378]|
                    9[12479]
                  )|
                  9(?:
                    1[346-9]|
                    2[1-4]|
                    3[2-46-8]|
                    5[1348]|
                    [69][1-9]|
                    7[12]|
                    8[1-8]
                  )
                )\\d{7}
              )
            ',
    ),
    '6' => array(
        // Australia AU
        '61' => '
          14(?:
            5\\d|
            71
          )\\d{5}|
          4(?:
            [0-3]\\d|
            4[47-9]|
            5[0-25-9]|
            6[6-9]|
            7[02-9]|
            8[147-9]|
            9[017-9]
          )\\d{6}
            ',
        // Indonesia ID
        '62' => '
          (?:
            2(?:
              1(?:
                3[145]|
                4[01]|
                5[1-469]|
                60|
                8[0359]|
                9\\d
              )|
              2(?:
                88|
                9[1256]
              )|
              3[1-4]9|
              4(?:
                36|
                91
              )|
              5(?:
                1[349]|
                [2-4]9
              )|
              6[0-7]9|
              7(?:
                [1-36]9|
                4[39]
              )|
              8[1-5]9|
              9[1-48]9
            )|
            3(?:
              19[1-3]|
              2[12]9|
              3[13]9|
              4(?:
                1[69]|
                39
              )|
              5[14]9|
              6(?:
                1[69]|
                2[89]
              )|
              709
            )|
            4[13]19|
            5(?:
              1(?:
                19|
                8[39]
              )|
              4[129]9|
              6[12]9
            )|
            6(?:
              19[12]|
              2(?:
                [23]9|
                77
              )
            )|
            7(?:
              1[13]9|
              2[15]9|
              419|
              5(?:
                1[89]|
                29
              )|
              6[15]9|
              7[178]9
            )
          )\\d{5,6}|
          8[1-35-9]\\d{7,10}
        ',
        // Malaysia MY
        '60' => '
              1(?:
                1[1-5]\\d{2}|
                [02-4679][2-9]\\d|
                59\\d{2}|
                8(?:
                  1[23]|
                  [2-9]\\d
                )
              )\\d{5}
            ',
        // New Zealand NZ
        '64' => '
              2(?:
                [028]\\d{7,8}|
                1(?:
                  [03]\\d{5,7}|
                  [12457]\\d{5,6}|
                  [689]\\d{5}
                )|
                [79]\\d{7}
              )
            ',
        // PH Philippines
        '63' => '
              (?:
                81[37]|
                9(?:
                  0[5-9]|
                  1[024-9]|
                  2[0-35-9]|
                  3[02-9]|
                  4[236-9]|
                  50|
                  7[34-79]|
                  89|
                  9[4-9]
                )
              )\\d{7}
            ',
        // SG  Singapore
        '65' => '(?:8[1-8]|9[0-8])\\d{6}',
        // TH  Thailand
        '66' => '
          (?:
            14|
            6[1-4]|
            [89]\\d
          )\\d{7}
            ',
        // Brunei BN
        '673' => '
          22[89]\\d{4}|
          [78]\\d{6}
        ',
    ),
    '7' => array(
        // Russia RU
        '7' => array(
        '(?:
            9
          )\\d{9}
        ',
        // Kazakhstan kz
        '(?:
            7(0|1|2|6|7)
          )[0-8]\\d{7}
        ',
      ),
    ),
    '8' => array(
        // China CN
        '86'  => '
              1(?:
                [38]\\d|
                4[57]|
                5[0-35-9]|
                7[0136-8]
              )\\d{8}
            ',
        // Hong Kong SAR China HK
        '852' => '
          (?:
            5[1-79]\\d|
            6\\d{2}|
            8[4-79]\\d|
            9(?:
              0[1-9]|
              [1-8]\\d
            )
          )\\d{5}
            ',
        // Taiwan TW
        '886' => '9\\d{8}',
        // Korea KR
        '82'  => '
        1[0-26-9]\\d{7,8}
        ',
        // Japan JP
        '81' => '
          [7-9]0[1-9]\\d{7}
        ',
        // Cambodia
        '855' => '[0-9]\\d{11}',
        // Vietnam
        '84' => '[0-9]\\d{11}',
    ),
    '9' => array(
        // United Arab Emirates Dubai  AE
        '9714' => '
        5[024-6]\\d{7}
        ',
        // Iran IR
        '98'   => '
              9(?:
                0[1-3]|
                [13]\\d|
                2[0-2]|
                90
              )\\d{7}
            ',
        // Israel IL
        '972'  => '
          5(?:
            [02-47-9]\\d{2}|
            5(?:
              01|
              2[23]|
              3[2-4]|
              4[45]|
              5[5689]|
              6[67]|
              7[0178]|
              8[6-9]|
              9[4-9]
            )|
            6[2-9]\\d
          )\\d{5}
            ',
        // India IN
        '91'   => '
          (?:
            7(?:
              0\\d{3}|
              2(?:
                [0235679]\\d{2}|
                [14][017-9]\\d|
                8(?:
                  [0-59]\\d|
                  6[089]
                )|
                9[389]\\d
              )|
              3(?:
                [05-8]\\d{2}|
                1(?:
                  [089]\\d|
                  7[5-8]
                )|
                2(?:
                  [5-8]\\d|
                  [01][089]
                )|
                3[17-9]\\d|
                4(?:
                  [07-9]\\d|
                  11
                )|
                9(?:
                  [01689]\\d|
                  59
                )
              )|
              4(?:
                0[1-9]\\d|
                1(?:
                  [015-9]\\d|
                  4[08]
                )|
                2(?:
                  58|
                  [89]\\d
                )|
                39\\d|
                7(?:
                  0[3-9]|
                  11|
                  7[02-8]|
                  [89]\\d
                )|
                8(?:
                  [0-24-7][089]|
                  [389]\\d
                )|
                9(?:
                  [0-6][089]|
                  7[08]|
                  [89]\\d
                )
              )|
              5(?:
                [034678]\\d|
                2[03-9]|
                5[017-9]|
                9[7-9]
              )\\d|
              6(?:
                0[0-47]|
                1[0-257-9]|
                2[0-4]|
                3[19]|
                5[4589]|
                [6-9]\\d
              )\\d|
              7(?:
                0[2-9]|
                [1-79]\\d|
                8[1-9]
              )\\d|
              8(?:
                [0-79]\\d{2}|
                880
              )|
              99[4-9]\\d
            )|
            8(?:
              0(?:
                [01589]\\d|
                6[67]
              )|
              1(?:
                [02-57-9]\\d|
                1[0135-9]
              )|
              2(?:
                [236-9]\\d|
                5[1-9]
              )|
              3(?:
                [0357-9]\\d|
                4[1-9]
              )|
              [45]\\d{2}|
              6[02457-9]\\d|
              7(?:
                07|
                [1-69]\\d
              )|
              8(?:
                [0-26-9]\\d|
                44|
                5[2-9]
              )|
              9(?:
                [035-9]\\d|
                2[2-9]|
                4[0-8]
              )
            )\\d|
            9\\d{4}
          )\\d{5}
            ',
        // Saudi Arabia SA
        '966'  => '
              (?:
                5(?:
                  [013-689]\\d|
                  7[0-26-8]
                )|
                811\\d
              )\\d{6}
            ',
        // Turkey TR
        '90'   => '
              5(?:
                0[1-7]|
                22|
                [34]\\d|
                5[1-59]|
                9[246]
              )\\d{7}
            ',
        // Myanmar [Burma] MM
        '95' => '
          17[01]\\d{4}|
          9(?:
            2(?:
              [0-4]|
              5\\d{2}|
              6[0-5]\\d
            )|
            3[0-36]\\d|
            4(?:
              0[0-4]\\d|
              [1379]\\d|
              2\\d{2}|
              4[0-589]\\d|
              5\\d{2}|
              88
            )|
            5[0-6]|
            61?\\d|
            7(?:
              3\\d|
              [789]\\d{2}
            )|
            8\\d|
            9(?:
              1\\d|
              [67]\\d{2}|
              [089]
            )
          )\\d{5}
        ',
    ),
);
